define(['jquery','underscore','Magento_PageBuilder/js/events','slick'],function($,_,events){'use strict';function buildSlick($carouselElement,config){let initialized=$carouselElement.hasClass('slick-initialized');if(initialized){$carouselElement.slick('unslick');$carouselElement.off('setPosition');} config.slidesToScroll=config.slidesToShow;$carouselElement.slick(config);if(initialized){$carouselElement.trigger('refresh',[$carouselElement.slick('getSlick')])} if(config.centerMode||$carouselElement.find('[data-content-type="slider"]')){$carouselElement.on('setPosition',function(event,slick){if(event.target==event.currentTarget){if(slick.options.leftPadding||slick.options.rightPadding){let leftPadding=slick.options.leftPadding,rightPadding=slick.options.rightPadding,isEvenSlider=slick.options.slidesToShow%2==0;if(isEvenSlider){$carouselElement.find('> .slick-list > .slick-track > .slick-slide.slick-active').last().removeClass('slick-active');$carouselElement.find('> .slick-list > .slick-track > .slick-slide.slick-active').first().prev().addClass('slick-active');} if(leftPadding!==rightPadding){$carouselElement.find('> .slick-list').css('padding','0 '+rightPadding+' 0 '+leftPadding)}} if($carouselElement.find('.slick-slider.slick-initialized').length){$carouselElement.find('.slick-slider.slick-initialized').each(function(){if($(this).slick){$(this).slick('setPosition');}});}}});$carouselElement.slick('setPosition');}} function initSlider($element,$carouselElement,slickConfig,breakpoint,currentViewport){var productCount=$element.find('.product-item').length,centerModeClass='center-mode',carouselMode=$element.data('carousel-mode'),slidesToShow=breakpoint.options.products[carouselMode]?breakpoint.options.products[carouselMode].slidesToShow:breakpoint.options.products.default.slidesToShow;slickConfig.slidesToShow=parseFloat(slidesToShow);let viewportForConfigs=(currentViewport=='desktop'||currentViewport=='tablet')?'desktop':'mobile';if(slickConfig.dots){if($element.data("hide-dots-"+viewportForConfigs)==1){slickConfig.dots=false;}} if(slickConfig.arrows){if($element.data("hide-arrows-"+viewportForConfigs)==1){slickConfig.arrows=false;}} let $slidesToShow=parseInt($element.data('grid-size-'+currentViewport));if($slidesToShow){slickConfig.slidesToShow=$slidesToShow} if(carouselMode==='continuous'&&productCount>slickConfig.slidesToShow){$element.addClass(centerModeClass);slickConfig.centerPadding=$element.data('center-padding');slickConfig.centerMode=true;}else{$element.removeClass(centerModeClass);slickConfig.infinite=$element.data('infinite-loop');} if($element.data('vertical')==1){slickConfig.vertical=true;slickConfig.verticalSwiping=true;}else{if(productCount>slickConfig.slidesToShow&&$element.data('stage-padding')==1){var centerPadding=0,finalLeftPadding=0,finalRightPadding=0,leftPadding=parseInt($element.data("stage-padding-left-desktop")),rightPadding=parseInt($element.data("stage-padding-right-desktop"));if(viewportForConfigs!=='desktop'||(isNaN(leftPadding)&&isNaN(rightPadding))){leftPadding=parseInt($element.data("stage-padding-left"));rightPadding=parseInt($element.data("stage-padding-right"));} if(!isNaN(leftPadding)){centerPadding+=leftPadding;finalLeftPadding=leftPadding;} if(!isNaN(rightPadding)){centerPadding+=rightPadding;finalRightPadding=rightPadding;} slickConfig.centerPadding=centerPadding/2+'px';if(finalLeftPadding!==finalRightPadding){slickConfig.leftPadding=finalLeftPadding+'px';slickConfig.rightPadding=finalRightPadding+'px';}}} slickConfig.slidesToScroll=slickConfig.slidesToShow;buildSlick($carouselElement,slickConfig);} return function(config,element){var $element=$(element),$carouselElement=$element.children().first(),currentViewport=config.currentViewport,currentBreakpoint=config.breakpoints[currentViewport],slickConfig={autoplay:$element.data('autoplay'),autoplaySpeed:$element.data('autoplay-speed')||0,arrows:$element.data('show-arrows'),dots:$element.data('show-dots')};initSlider($element,$carouselElement,slickConfig,currentBreakpoint,currentViewport);events.on('stage:viewportChangeAfter',function(args){initSlider($element,$carouselElement,slickConfig,config.breakpoints[args.viewport],args.viewport);});};});